home *** CD-ROM | disk | FTP | other *** search
/ Greenhouse Effect Detection Expriment / NASA Greenhouse Effect Detection Expriment 1992 - Disc 2.iso / software / dos / cdf22pc / src / lib / cdfclo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-13  |  1.5 KB  |  68 lines

  1. /******************************************************************************
  2. *
  3. *  NSSDC/CDF                           CDF 'close' operations.
  4. *
  5. *  Version 1.0, 14-Feb-92, ST Systems (STX)
  6. *
  7. *  Modification history:
  8. *
  9. *   V1.0  14-Feb-92, J Love    Original version (was part of `cdflib.c').
  10. *
  11. ******************************************************************************/
  12.  
  13. #include "cdflib.h"
  14.  
  15. /******************************************************************************
  16. * CDFclo.
  17. ******************************************************************************/
  18.  
  19. CDFstatus CDFclo (item, fnc)
  20. long item;
  21. long *fnc;
  22. {
  23. CDFstatus Pstatus = CDF_OK;
  24. CDFstatus Tstatus;
  25.  
  26. switch (item) {
  27.   case CDF_: {
  28.     CDFid id;
  29.  
  30.     if (_CURcdf == NULL) return NO_CDF_SELECTED;
  31.  
  32.     Tstatus = CloseCDFfiles (_CURcdf);
  33.     STATUSdisp (Tstatus, Pstatus);
  34.  
  35.     id = _CURcdf->id;
  36.     Free_CDFid (_CURcdf);
  37.     _CDFs[id] = NULL;               /* make CDFid reusable */
  38.     _CURcdf = NULL;             /* no "current" CDF anymore */
  39.  
  40.     break;
  41.   }
  42.   case VAR_: {
  43.     long stat;
  44.  
  45.     if (_CURcdf == NULL) return NO_CDF_SELECTED;
  46.     if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
  47.  
  48.     if (bitset(_CURcdf->CDR.Flags,CDF_FORMAT_BIT))
  49.       STATUSdisp (SINGLE_FILE_FORMAT, Pstatus)
  50.     else
  51.       if (_CURcdf->CURvar->status == VAR_OPENED) {
  52.     stat = Close (_CURcdf->CURvar->fp);
  53.     if (stat == EOF) return VAR_CLOSE_ERROR;
  54.     _CURcdf->CURvar->status = VAR_CLOSED;
  55.       }
  56.       else
  57.     STATUSdisp (VAR_ALREADY_CLOSED, Pstatus);
  58.  
  59.     break;
  60.   }
  61.   default: {
  62.     *fnc = item;
  63.     break;
  64.   }
  65. }
  66. return Pstatus;
  67. }
  68.